//vector<vector<int>> levelOrder(Node* root) {
//    vector<vector<int>> ret;
//    queue<Node*> q;
//    if (root == nullptr) return ret;
//    q.push(root);
//    while (q.size())
//    {
//        int levelsize = q.size();
//        vector<int> tmp;
//        while (levelsize--)
//        {
//            auto front = q.front();
//            q.pop();
//            tmp.push_back(front->val);
//            for (auto& e : front->children)
//            {
//                q.push(e);
//            }
//        }
//        ret.push_back(tmp);
//    }
//    return ret;
//}